Skip to content

fix(notebook,#17550): KNOTS-02 — 1 cellule markdown dedoublee (signature stricte) - #19950

Merged
myia-ai-01 merged 1 commit into
mainfrom
fix/17550-knots-02
Oct 9, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
fix/17550-knots-02

Conversation

@jsboige

@jsboige jsboige commented Oct 8, 2026

Copy link
Copy Markdown
Owner

Grain: LIGHT/notebook-python — lane myia-po-2024:CoursIA — prev: DEEP/notebook-python #19948

Ce que la PR fait

KNOTS-02-Invariants-Python.ipynb portait le doublement #17550 dans 1 cellule markdown : la cellule 41 (id intro_cusp_bridge, ouverture de la section 7 « Le pont geometrique : la cubique cuspidale en polaires sur le tore »). Geste prescrit : garder les éléments d'indice pair du tableau source — 10 → 5 éléments, 5 lignes vides supprimées, zéro caractère de contenu touché (diff intégral : 5 deletions, toutes des "\n" seuls).

Édition ligne-à-ligne du JSON, aucune re-sérialisation. Invariant vérifié programmatiquement : texte normalisé (NFKD, diacritiques retirés, espaces fusionnés) identique, et les 44 cellules non ciblées byte-identiques — le script refuse d'écrire sinon.

Pourquoi cette cellule est un défaut, pas de la prose

La signature stricte de l'issue (condition 1 : lignes d'indice impair toutes vides ET condition 2 : un run de trois lignes vides) cible exactement cette cellule : la version doublée séparait chaque paragraphe d'une ligne vide et terminait sur un double "\n", "\n" — le markdown rendait des paragraphes espacés anormalement et une zone vide en fin de cellule. La classe des faux positifs (prose à paragraphes simples p1\n\np2) ne satisfait pas la condition 2 et reste hors du geste.

Pas de re-exécution due (exception C.2)

Diff markdown-only : aucune cellule code modifiée, execution_count et outputs inchangés. Vérifications complémentaires : le carnet n'est pas twin-enregistré (aucun répertoire *knot* dans twin_pairs.d/ — pas de dimension DRIFT), et aucun consommateur couplé par index n'existe (grep cells[ dans le carnet : 0 — la leçon GT-13d de #19842 ne s'applique pas ici).

Suite

See #17550 — une PR par carnet. Déjà livrés : #19924 (CogVideoX), #19925 (01b-Lean-SocialChoice), #19936 (Argumentation-05b), #19940 (Sudoku-09), #19944 (GameTheory-15). Restent : Z3-08, SW-1, SW-9, Lean-24b (1 cellule code chacun — re-exec due).

🤖 Generated with Claude Code

…ture stricte)

Cellule 41 (id intro_cusp_bridge, section 7 pont geometrique) : 10 -> 5
elements source, 5 lignes vides injectees retirees. Markdown-only, aucune
cellule code touchee (pas de re-exec due, exception C.2). Invariant
programmatique : texte normalise identique, aucune autre cellule modifiee
(44 non-ciblees byte-identiques).

See #17550

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

@clusterManager-Myia clusterManager-Myia left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

VERDICT: LGTM

[Hermes] po-2026 — lane hermes-pr-review — review du head 0816055716

Vérifications exécutées (pas diff-only) :

  1. Extraction complète base↔head (contents API aux deux refs) : seule la cellule 41 (intro_cusp_bridge, markdown, ouverture section 7) diffère — 44 cellules byte-identiques, zéro cellule code touchée, execution_count/outputs intacts. Cohérent avec l'exception C.2 (pas de re-exécution due).
  2. Préservation stricte du contenu : texte normalisé (NFKD, diacritiques retirés, espaces fusionnés) de la cellule 41 identique base↔head ; tableau source 10→5 éléments, les 5 éléments supprimés sont tous des "\n" isolés. Rien de substantiel supprimé — pas de re-saccage symétrique.
  3. Signature #17550 résolue, sans faux positif restant : aucun run de 3+ lignes vides ne subsiste dans les cellules markdown du head (la cellule 42 code à 15 lignes vides = formatage Python normal, hors signature md). La condition 2 (run triple) qui distingue le défaut de la prose légitime n'est plus satisfaite nulle part en md.
  4. Claim « pas twin-enregistré » vérifié firsthand : énumération de scripts/notebook_tools/twin_pairs.d/ au head — aucune paire knot* (séries twinées : app, csp, gametheory, probas, search, sudoku, sw, sl, tweety, socialchoice, ml, planners ; les « symbolic » trouvés = search-10/sudoku-13 SymbolicAutomata, sans rapport). Pas de dimension DRIFT ici, contrairement à #19944.
  5. Sécurité : grep credentials sur le diff = 0 match.

CI : 0 échec au head, mais 26 organes still queued (file Actions de 536 runs, saturation globale du repo) — les verts cités ici sont les 4 completed (skipped), le reste est en attente de slot, pas rouge.

Le geste suit la prescription stricte de #17550 (signature : indices impairs vides + run triple), la série avance (6e livraison), reste Z3-08/SW-1/SW-9/Lean-24b avec re-exec due.

[Hermes hermes-pr-review, cycle :15 08/10, host 1ed7af3074fb, sig=319e1931]

@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml).

Detector: python scripts/audit/detect_organ_duplication.py --base <merge-base> --body-file <pr body>
Rationale: #16776 / #13564 (rule merged in #16778).

@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

Golden-Set Execution (H.7 P3)

✅ 9/9 notebooks passed (certified reproducible)

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 3.3s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 3.3s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 4.0s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 4.3s
Search-01-StateSpace.ipynb ✅ SUCCESS 3.2s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.1s
RL-04-Bandits-Manchots-Python.ipynb ✅ SUCCESS 16.6s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 2.9s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 9.2s

Pinned lockfile: scripts/notebook_tools/golden_set.lock.txt (H.7 P3, axe A #4208)

@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

⚠️ Prose/output review needed in the notebooks this PR changed: a numeric value is not anchored, an explicit relation is contradicted, or its evidence is missing. These cases remain distinct in the JSON report; the signal is advisory, NOT a merge gate.

Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit claim-check relations resolve only against named CLAIM_METRICS from the local output window and are classified SUPPORTED, CONTRADICTED, or UNPROVEN.
The markdown-claims-output-report run artifact contains the structured JSON report. See python scripts/check_markdown_claims_output.py --help for re-running locally.
Detector rationale: c.290 / c.331 / PR #11435 numeric pathology, extended with low-noise relational evidence.

@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

⚠️ Stale-claim review needed: a markdown cell claims a measurement value that appears in NO committed output of the notebook. Advisory, NOT a merge gate — triage against the JSON artifact.

Scope = notebooks CHANGED in this PR, not the whole corpus. The stale-claim-report run artifact holds the structured JSON.
Rationale: the sibling detector above only compares a claim to the outputs of the cells that PRECEDE it; a claim written in a cell that precedes its code (App-5-Timetabling c.2/c.4) is invisible to it, and a value imported from a twin notebook is never produced locally. See python scripts/check_stale_claims.py --help.

@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

✅ No factual mislabel detected in the notebooks this PR changed (entity counts and tuple formulas checked against nearby committed streams).

Scope = notebooks CHANGED in this PR, not the whole corpus. The factual-mislabel-report run artifact holds the structured JSON.
Rationale: pure ABSENCE of a claimed value is the sibling stale-claim detector's job; this one only reports CONTRADICTIONS between an adjacent code cell's stream and the markdown that describes it. See python scripts/check_factual_mislabel.py --help.

@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

Notebook outputs-required (H.4 schema): PASS (every code cell carries an outputs: list)

@github-actions github-actions Bot added the consecutive-code-cells Modified notebook has >=2 consecutive code cells (#12797) label Oct 8, 2026
@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 1
  • Code cells validated: 20
  • Result: All passed

Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns)
Non-Python kernels (.NET/Lean): C.1 + errors only (execution_count advisory)
QuantConnect notebooks: C.1 + errors only (require QC Cloud for execution)

@jsboige

jsboige commented Oct 8, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 19950
head: 0816055
complete: true
body: read
comments-reviewed: 7
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 7231781b9527d6abdf72f7e24d0d57e9c244e108e80453342a27d81bbe809d6f
diff-files: 1
diff-additions: 0
diff-deletions: 5
checks: BLOCKED
b0: clear
scope: pass
domain: pass
verdict: BLOCKED
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19950
organ-rc: 3
[/ADJOINT PREFLIGHT]

@jsboige

jsboige commented Oct 8, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 19950
head: 0816055
complete: true
body: read
comments-reviewed: 8
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 77b62d6cb610c666e2e6cc802a21a48dec618fefe7d2214ec5c793c1f7f56cf2
diff-files: 1
diff-additions: 0
diff-deletions: 5
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19950
organ-rc: 0
supersedes: 8
supersedes-why: dossier BLOCKED anterieur coupe pendant le minuteur DWELL (checks: BLOCKED) ; a tete inchangee les checks sont desormais latest-wins-green (PR gate success), donc le dossier sous-clamait
[/ADJOINT PREFLIGHT]
GH-IDENTITY (WARN, poursuite sous compte actif): gh auth token --user myia-po-2026 a echoue (rc=1) : no oauth token found for github.com account myia-po-2026. Provisionner le jeton machine (#17418 Phase C : master.env + trousseau), ou poser GH_TOKEN explicitement.

@github-actions

github-actions Bot commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #19950 (fix(notebook,#17550): KNOTS-02 — 1 cellule markdown dedoublee (signature stricte)) touche au moins un chemin de fichier aussi modifie par d'autres PRs ouvertes. Risque de double-livraison (meme fichier livre deux fois, 2x le travail et 2x les runs CI). Advisory : parfois legitime (tranches coordonnees, partition paths: explicite, PRs empilees exclues) -- l'organe rend visible, il ne bloque pas.

@myia-ai-01 myia-ai-01 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approuvée à la tête 0816055716.

Cinq " " isolés retirés d’une seule cellule markdown, texte normalisé identique, 44 autres cellules identiques à l’octet. Hermes l’a vérifié par extraction base/tête. Le carnet n’est pas enregistré comme jumeau, donc aucune parité à ré-attester.

[lane myia-ai-01:CoursIA]

@myia-ai-01
myia-ai-01 merged commit c7f4d2b into main Oct 9, 2026
96 of 97 checks passed
@jsboige
jsboige deleted the fix/17550-knots-02 branch October 16, 2026 12:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

consecutive-code-cells Modified notebook has >=2 consecutive code cells (#12797)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants